package cn.edu.ecut.java.oop;
/**
 * 1.JVM 启动后会创建并启动一个名称为 main 的线程，该线程调用了 Panda.main 方法
 * 2.每个线程执行时都会对应着一个 方法栈（stack）
 * 3.线程调用每个方法时，都会在 方法栈（stack）中产生一个与当前方法对应 栈帧（stack frame）
 * 4.深入理解java中变量；本质上 变量（Variable） 就是存放 值 的容器
 * 5.java语言中，任意变量都有三个特征:类型 ， 名称 ，值
 * **/
public class Panda {
//含有public static void main（String[]）方法类被称作 启动类
    //启动类 是 JVM 可以直接运行的类 也就是 JVM启动后会调用 panda.main 方法
    //JVM 启动后会创建并启动一个名称为main 的线程，该线程调用了panda.main 方法
//每个线程执行是都会对应着一个栈(stack)
    //线程调用每个方法时，都会在栈（stack）中产生一个与当前方法对应的 栈帧（stack frame）
    //方法执行时会产生与之对应的 栈帧 并压入栈顶，等到方法执行结束后即从栈顶弹出
    public static void main(String[] args) {
        //获得当前线程的引用（当前正在执行的线程对象的引用）
        Thread t = Thread.currentThread();
        System.out.println(t);
        //方法的参数,方法内部声明的局部变量都会随着 栈帧 的存在而存在，消失而消失
        //本质上，变量（Variable）就是存放值的容器，（不论什么类型的变量皆是如此）
        int x =100;
        System.out.println(x);
        x= 200;
        System.out.println(x);
        boolean b = true ;
        System.out.println(b);
        b = false;
        System.out.println(b);

        String s ="hellon";//引用变量 s 内部存储的是 string 对象"hello"的地址
//一定要理解：地址 也是 值
        System.out.println( s );
        String p = new String ("hello");
        //== 运算符永远用于比较 两个值 是否相等，比如两个变量中存储的值是否相等；
        System.out.println(s==p);//false ： 因为两个引用变量中存储的值不同
        Panda d =new Panda(); // 引用变量 d 中存储的是一个 Panda 对象的地址
        System.out.println(d);
    }
}
